package cn.sccl.dirms.topo.discovery.task;


import cn.sccl.dirms.topo.discovery.service.DiscoverTaskManager;
import org.springframework.beans.factory.annotation.Autowired;


/**
 * 扫描发现任务
 *
 * @author tiger
 */
//@Component
public class BaseTaskJob {
    @Autowired
    DiscoverTaskManager taskManager;

    @Autowired
    DiscoveryService service;
    /**
     * 线程池数
     */
    public static int THREAD_COUNT = 10;
    public static String JOB_USER = "job";
    public static String JOB_PASSWORD = "job";

    //@Scheduled(initialDelay = 10000, fixedRate = 30000)
    public void startJob() {
//        //登录
//        Boolean loginState = this.login();
//        if (loginState) {
//            List<DiscoverTask> tasks = taskManager.getWaitTasks();
//            if (CollectionUtils.isNotEmpty(tasks)) {
//                List<BaseTaskThread> thList = new ArrayList<BaseTaskThread>();
//                //新算法，待分配任务数M，线程N ，当M < N，每线程1个任务，共M线程；如果任务数M > 线程数N，则前面的每线程任务数为整除数 +1，后面的为整除数;
//                int j = -1;
//                //计算每线程预分配任务数
//                int iPerThreadTasks = tasks.size() < THREAD_COUNT ? 1 : tasks.size() / THREAD_COUNT;
//                int iTempTasksCount = tasks.size() < THREAD_COUNT ? tasks.size() : tasks.size() - tasks.size() % THREAD_COUNT;
//                for (int i = 0; i < iTempTasksCount; i++) {
//                    if (i % iPerThreadTasks == 0) {
//                        BaseTaskThread th = new BaseTaskThread();
//                        th.setService(service);
//                        thList.add(th);
//                        j++;
//                        //如果有分配剩余的N个任务，平均分配到前N个线程，每个线程1个
//                        if (tasks.size() / THREAD_COUNT > 0 && j < tasks.size() % THREAD_COUNT) {
//                            thList.get(j).getTasks().add(tasks.get(iTempTasksCount + j));
//                        }
//                    }
//                    thList.get(j).getTasks().add(tasks.get(i));
//                }
//                for (BaseTaskThread th : thList) {
//                    //启动任务线程
//                    new Thread(th).start();
//                }
//            }
//        }

    }

    /**
     * 登录
     *
     * @return
     */
    private boolean login() {
//        UsernamePasswordToken token = new UsernamePasswordToken(JOB_USER, JOB_PASSWORD);
//        try {
//           UserPrincipalDetails loginInfo = (UserPrincipalDetails)SecurityUtils.getSubject().getPrincipal();
//           //已登录就不再登录
//            if(loginInfo==null){
//               SecurityUtils.getSubject().login(token);
//           }
//           return true;
//        } catch (Exception ex) {
//            ex.printStackTrace();
//            System.out.println("登录失败！");
//            return false;
//        }
        return true;
    }


}
